この関数は、トランザクション・ログから最大maxrecordsの更新レコードをフェッチし、コミットされたトランザクションに関連付けられているレコードをrecordsバッファに返します。実際に返されたレコードの数が出力パラメータnreturnedに記録されます。
トランザクション・ログを永続モードで処理する場合は、ttXlaNextUpdateをコールするたびに、最後に読み取られたレコードにブックマークが再設定され、次のレコードのリストを返すためにttXlaNextUpdateへの次のコールが有効にされます。
この関数の使用方法については、「トランザクション・ログからの更新レコードの取得」を参照してください。
SQLRETURN ttXlaNextUpdate(ttXlaHandle_h handle,
out ttXlaUpdateDesc_t ***records,
SQLINTEGER maxrecords,
out SQLINTEGER *nreturned)
パラメータ | 型 | 説明 |
handle | ttXlaHandle_h | データ・ストアのトランザクション・ログ・ハンドル。 |
records | out ttXlaUpdateDesc_t *** | 完了したトランザクション・レコードを保持するバッファ。 |
maxrecords | SQLINTEGER | フェッチされるレコードの最大数。 |
nreturned | out SQLINTEGER * | 実際に返されたレコードの数。使用可能な更新データがない場合は、0(ゼロ)が返されます。 |
コールが成功すると、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
この例では、最大100個のレコードを取得し、各レコードが処理されるループについて記述します。
ttXlaUpdateDesc_t **records;
SQLINTEGER nreturned;
SQLINTEGER i;
rc = ttXlaNextUpdate(xlahandle, &records, 100, &nreturned);
/* Check for errors; if none, process the records */
for (i = 0; i < nreturned; i++) {
process(records[i]);
}
また、install_dir/demo/xla/persistent_xla/subscriber.c
ファイル内のinspectTransactions()関数およびinstall_dir/demo/xla/xla.c
ファイル内のmain()関数も参照してください。
追跡ステータスに関係なく、すべてのデータ定義文に対して更新が生成されます。また、更新はすべてのXLA追跡対象表でのデータ更新処理に対して生成されます。つまり、XLAリーダーによる各処理では、不要な表IDの更新をフィルタ処理する必要があります。
また、表および列に対するアプリケーション・レベルの識別子の割当て、表の追跡ステータスの変更などの特定の処理でも更新が生成されます。